package com.transpeed.payservice.log;

import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;

/**1111111111111111111111
 * @Description:定期删除15天之前的日志
 * @time:2017年1月19日 下午3:49:18
 * @author DeveloperLizhi
 */

public class DelLog {
	private static ArrayList<String> filelist = new ArrayList<String>();
	private static long TodayDate;// 当天日期

	public static void Del() {
		TodayDate = System.currentTimeMillis();// 当前日期的时间戳
		DelLogFile("Main");
		DelLogFile("AlipayQRCode");
		DelLogFile("LocalPos");
		DelLogFile("ServerPos");
		DelLogFile("UmsPay");
		DelLogFile("WeChat");
	}

	// 通过递归得到某一路径下所有的目录及其文件
	public static void getFiles(String filePath) {
		File[] files = new File(filePath).listFiles();
		for (File file : files) {
			if (file.isDirectory()) {
				getFiles(file.getAbsolutePath());
				filelist.add(file.getAbsolutePath());
				// System.out.println("显示"+filePath+"下所有子目录及其文件"+file.getAbsolutePath());
				// System.out.println("显示下所有子目录及其文件"+file.getAbsolutePath());
				int getTimeStampHalfMonth = 1296000000;// 一天的时间戳
				int len = file.getAbsolutePath().length();
				String dateforLogName = file.getAbsolutePath().substring(
						len - 10, len);// 取出日志文件的文件名
				long timeStampforLogName = 0;

				// 获取当前日志文件的日期转换为时间戳
				SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd");
				try {
					timeStampforLogName = DateFormat.parse(dateforLogName)
							.getTime();
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

				String DelLogDirectory = filePath + java.io.File.separatorChar
						+ dateforLogName;// 要删除的日志文件
				// 删除15天前的日志
				if (TodayDate - timeStampforLogName >= getTimeStampHalfMonth) {
					boolean success = deleteDir(new File(DelLogDirectory));
					if (success)
						Log.Write("成功删除以下过期日志: " + DelLogDirectory, "Main");
					else
						Log.Write("失败删除以下日志: " + DelLogDirectory, "Main");

				}
				// System.out.println(file.getAbsolutePath());
			}
		}
	}

	private static boolean deleteDir(File dir) {
		if (dir.isDirectory()) {
			String[] children = dir.list();
			for (int i = 0; i < children.length; i++) {
				boolean success = deleteDir(new File(dir, children[i]));
				if (!success) {
					return false;
				}
			}
		}
		// 目录此时为空，可以删除
		return dir.delete();
	}

	private static void DelLogFile(String Directory) {

		getFiles(LogUtils.getDirectory(Directory));

	}

}
